我的问题是我觉得很奇怪的事情。事实上,我列出了给定进程的所有子进程。
为此,我使用:如何查找所有子进程?和RC的回答。
但是,我需要一个无符号长的出口。并且解决方案给出了一些基于a的字符串char[]
如果我想获取unsigned long
,我需要修改代码以仅获取数值。另一种情况将不正确。
所以我把char
as unsigned long
. 然后,scanf
带有%ld
标签。
但我越来越废话了...
为什么这不起作用?
编辑:代码:
const char *name = "top";
char command[100];
unsigned long parentID; unsigned long processID;
strcpy(command, "ps -C "); strcat(command, name); strcat(command, " --format '%P %p'");
FILE *fp = popen(command, "r");
if (fp == NULL) fprintf(stderr, "Error in reading PID child processes information !\n");
while(fscanf(fp, "%lu %lu", parentID, processID) != EOF) {
printf("PID : %lu Parent : %lu \n", processID, parentID);
}
return processID;
有了,%s
并且char[256]
,这项工作!
编辑:想法
我正在考虑两种方法来做到这一点:
- 首先,使用
unsigned long
代替char[]
. - 二、读取文件后转换
char[]
为。unsigned long
但是,我需要逐行阅读。有可能popen
吗?