我最近正在学习linux下的fork()函数。我写了个程序。
#include<stdio.h>
int main(){
int p1, p2;
while((p1 = fork()) == -1);
if(p1 == 0)
printf("b");
else{
while((p2 = fork()) == -1);
if(p2 == 0)
printf("c");
else
printf("a");
}
}
在我编译并运行它之后,我得到了一个意外的百分号。
但是如果我在这些字母后面加上\n,百分号就消失了。
有人知道原因吗?
我还有一个问题。每次我重播节目时,得到的答案都是一样的。它总是显示“ACB”。顺序总是一样的。为什么?
您的shell(zsh)添加了它,以指示输出没有以换行符结束。
要消除它,只需以\n
结束输出。
至于另一个问题,它不是确定性的。如果你在其他地方运行它或足够多的时间,你可能会得到不同的结果。但这说明了为什么同步问题如此难以发现,因为事情似乎总是运行相同(几乎)。
例如,当我为num1输入2,为num2输入3时,我希望在输入第二个数字后立即获得8的输出。但是,程序希望我再输入一个整数,而我只输入一个随机数,如242,它仍然输出8,这意味着它不会影响结果。所以我的问题是为什么有第三个输入?感谢您的帮助!
问题是 有一个输入字符串集合和一个查询字符串集合。对于每个查询字符串,确定它在输入字符串列表中出现的次数。 字符串=[ab,ab,abc]查询=[ab,abc,bc]有ab的实例2,'abc'的实例1和'bc'的实例0。对于每个查询,添加一个元素。 现在我尝试使用链表实现它,但不是以2,1,0的形式获得输出。我得到的输出是2,1,0,2,2,1,0,2。我不知道是如何为超过3个链接创建LL的。请帮
编写并测试您自己的函数char*funct(char*str,int x),反转字符串str(位置n的字符除外),并返回修改后的str作为结果。函数funct的用途可以是: 这是主要的: 你好CppepC ollH 应该是: 你好Cpp
我在程序末尾有以下语句: 有人能告诉我为什么会这样吗?
为什么在这个输出的末尾有一个尾随的%?我尝试刷新流(而不是endl),但是当我调用endl结束流时,它会删除%。这里的任何帮助都将不胜感激。 下面是关于编译器的更多信息,我使用的是macOS 10.15.4:
我是java初学者,我对上述程序的输出感到困惑。请给我解释一下输出的原因。