C popen()对所有命令都成功
无论在popen()中传递什么“cmd”字符串,我都不会失败 因此,即使对于随机的“cmd”字符串,fp也永远不会为NULLC popen()对所有命令都成功,c,fopen,popen,fgets,C,Fopen,Popen,Fgets,无论在popen()中传递什么“cmd”字符串,我都不会失败 因此,即使对于随机的“cmd”字符串,fp也永远不会为NULL 它的表现似乎与预期相符: 如您所见,popen只有在其内部管道命令失败时才会失败——流无法打开。例如,所有文件描述符都在使用中popen运行shell实例。启动shell通常会成功。您需要确定它是否已成功终止popen本身无法执行此操作,但是pclose可以:它返回子进程的状态(如果发生另一个错误,则返回-1) 因此,为了验证命令是否已成功执行,需要检查popen和pc
它的表现似乎与预期相符:
如您所见,popen只有在其内部
管道命令失败时才会失败——流无法打开。例如,所有文件描述符都在使用中popen
运行shell实例。启动shell通常会成功。您需要确定它是否已成功终止popen
本身无法执行此操作,但是pclose
可以:它返回子进程的状态(如果发生另一个错误,则返回-1)
因此,为了验证命令是否已成功执行,需要检查popen
和pclose
popen
的返回值,而不管您传递给它的命令是什么,或者命令是否有意义。只有当它无法将您的命令传递到execv
时,它才会失败。非常感谢!!我明白了
FILE *fp;
char path[1035];
char cmd = "randomrandomrandom";
fp = popen(cmd, "r");
if (fp == NULL) {
//Handle Error
exit(1);
}
while (fgets(path, sizeof(path)-1, fp) != NULL) {
printf("%s", path);
}
pclose(fp);