我有以下问题。假设我有两个程序,一个是“input.c”,第二个是“output.c”。输出很简单,看起来像这样(我将只粘贴最重要的一段)。
输出bin.c
//
char buffer[512];
strncpy(buffer, argv[1], sizeof(buffer));
printf("Your output is: %s\n", buffer);
//
这是我的 input.c 的主要段落:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc, char *argv[])
{
pid_t pid;
char *charchar = "\x41";
int status;
char *outputbin;
int i, j, iterations;
if(argc < 2)
{
fprintf(stderr, "Usage: %s <iterations> <outputbin>\n", argv[0]);
exit(0);
}
iterations = atoi(argv[1]);
outputbin = argv[2];
pid = fork();
if(pid != 0)
{
waitpid(-1, &status, 0);
}
if(pid == 0)
{
for(i=0; i < iterations; ++i)
{
for(j = 0; j <= i; ++j)
{
printf("%s", charchar);
//execl(outputbin, outputbin, charchar, NULL);
}
printf("\n");
}
}
return 0;
}
当我使用 gcc 编译此程序并执行此操作时(没有 argv[2]): ./input 10 我得到以下信息:
A
AA
AAA
AAAA
AAAAA
AAAAAA
AAAAAAA
AAAAAAAA
AAAAAAAAA
AAAAAAAAAA
没关系,但直到我删除这段代码 - “ printf("%s", input); ”并取消注释“ execl ”,所以:
for(j = 0; j <= i; ++j)
{
execl(output, output, input, NULL);
}
并运行:./a.out 10 ./outputbin
我只得到这个 -你的输出是:A
只有第一个字符,仅此而已。如何让字符串逐行执行整个“半金字塔”?无论我尝试什么,一切都以相同的结果结束。