无论在popen()中传递什么“cmd”字符串,它永远不会对我失败
因此即使对于随机的“cmd”字符串,fp也永远不会为NULL。
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);
答案 0 :(得分:2)
php artisan route:clear
运行 shell 的实例。启动shell通常会成功。您需要确定它是否已成功终止。 popen
本身不能这样做,但popen
可以:它返回子进程的状态(如果发生了其他错误,则返回-1)。
因此,为了验证命令是否已成功执行,需要检查pclose
和popen
的返回值。
答案 1 :(得分:1)
似乎表现得如预期: http://pubs.opengroup.org/onlinepubs/009695399/functions/popen.html
如您所见,popen仅在其内部pipe
命令失败时失败 - 无法打开流。例如,所有文件描述符都在使用中