我的 if 语句在控制流方面起作用 - 即它捕获条件并相应地执行或通过(下面的第二个 if 语句)。但是,当我使用值 2 调用已编译的程序时./bankers.c 2, num_processes 的值恢复为 0 并将 0 打印到控制台,而不是 2。当我在 if() 之外取消对该函数的第二次调用时,它就可以工作了. 无论调用该函数是什么,它都不应该填充变量吗?我知道你可以在 if 语句中调用 fork() 函数。这更像是一个理论问题。
int num_processes = 1;
if (argv[1] == NULL)
{
printf("Please enter an integer command line argument between 1 and 20 (exiting)\n\n");
return 1;
}
else
{
char *remainder;
if (num_processes = strtol(argv[1], &remainder, 10) < 1)
{
fprintf(stderr, "Please request 1 or more processes (exiting)\n");
return 2;
}
// num_processes = strtol(argv[1], &remainder, 10);
printf("Rest of string: %s\n", remainder);
}
printf("Num processes %u\n", num_processes);