【发布时间】:2016-12-04 02:47:53
【问题描述】:
我在学习函数 system() 是 stdlib.h 并意识到我可以创建一个使用 system() 自行运行的程序。我写了这段代码并试了一下:
#include <stdio.h>
#include <stdlib.h>
int main(){
printf("x");
system("./a.out");
}
每次我在正常退出之前运行它时,它都会准确地打印 563 x 到控制台(没有错误)。我想知道是什么停止了程序以及这个数字来自哪里,因为这对我来说似乎很随意。谢谢
感谢您对第一个程序的见解,但我不相信系统会停止它,因为它的资源不足,原因如下:我刚刚编写了这个新程序,它还没有停止。
#include <stdio.h>
#include <stdlib.h>
int main(){
printf("x");
system("./a.out");
system("./a.out");
}
另外,当我尝试打开一个新的控制台窗口时,我收到了这个错误:
/.oh-my-zsh/lib/theme-and-appearance.zsh:24: fork failed: resource temporarily unavailable
/.oh-my-zsh/oh-my-zsh.sh:57: fork failed: resource temporarily unavailable
【问题讨论】:
-
"... 我不相信系统会因为资源不足而停止它..." - "... 我得到了这个错误:fork failed: resource暂时不可用...” - 确信了吗?
-
我想扩展一个事实,即您的第二个程序打印的 x 不应该是第一个程序的两倍 - 相反,x 的数量(和运行时)对于每次调用都会加倍 程序。所以你大概会看到2^563 x 打印到屏幕上——它永远不会停止。
-
当你不检查 system() 调用的返回值时,你怎么知道没有错误?显然有错误,你忽略它。
标签: c