假设我称之为:
system("ls -1"); // argument minus-one puts one item per line...how,我会在调用过程stdin中捕捉到这一点吗?
根据我所读到的,system (在Linux中)打开bash提示符并尝试执行命令。这表示进程调用系统是父进程。1111,但我找不到明确的源代码,只是linux说“做这件事”,既没有解释也没有来源。
读取其他来源可以通过/proc/pid/fd/0将数据传递到任意进程管道
根据这些资料,我认为:
system("ls -1 > /proc/1111/fd/0"); ...accomplishes这个。但看起来我以前没做过什么,而且我的扣减来源也没有我想要的那么正式。
那么,这是一种将系统命令的输出传递给stdin的便携方式吗?
如果没有,我该怎么做呢?
发布于 2018-06-26 10:22:50
似乎您正在尝试读取特定目录中所有文件/文件夹名称的列表。在您的例子中,当前的工作目录。由于尝试使用ls,您似乎也对*NIX解决方案感兴趣。
有许多方法可以将输出从子进程读入父进程。您可以在管道中使用fork/exec,也可以使用popen。
但是对于这个例子,您不需要通过ls。您将使用Linux直接读取目录。
考虑一下下面的程序-
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
DIR *directory = opendir(".");
if (directory == NULL)
return EXIT_FAILURE;
struct dirent * entry;
while (entry = readdir(directory)) {
printf("%s\n", entry->d_name);
}
closedir(directory);
return 0;
}如果不需要"."和".."条目,您可能想跳过这些条目。
下面是一个相同的工作演示
https://stackoverflow.com/questions/51040104
复制相似问题