- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试完成一个可以 fork 函数子进程的程序,父进程可以获取输入文件(在同一目录下),反转该文件的内容,然后使用管道函数传递给子进程。子进程将从管道读取消息并生成输出文件。我已经完成了 fork、创建管道和反向功能。但是我被困在将其写入管道中。我知道当我尝试将参数传递到写入函数时一定存在一些类型混淆,任何命中将不胜感激。
这是我到目前为止的代码:
#include <stdio.h>
#include <stdlib.h> //exit
#include <string.h>
#include <sys/types.h> //pid_t
#define READ_END 0
#define WRITE_END 1
int main(int argc, char *argv[]){
long loc;
FILE *in, *out;
char ch;
if (argc != 3)
{
printf("Usage %s message\n", argv[0]);
exit(EXIT_FAILURE);
}
int pipefd[2];
int pipe_return = pipe(pipefd);
if((in = fopen(argv[1], "rb")) == NULL) {
printf("Cannot open input file.\n");
exit(1);
}
if((out = fopen(argv[2], "wb"))==NULL) {
printf("Cannot open output file.\n");
exit(1);
}
if(pipe_return == -1)
{
printf("Unable to create pipe\n");
exit(EXIT_FAILURE);
}
pid_t return_from_fork = fork();
if (return_from_fork == -1)
{
printf("Unable to fork\n");
exit(EXIT_FAILURE);
}
else if (return_from_fork == 0) //this is a child
{
char msg;
close(pipefd[WRITE_END]);
int read_return = read(pipefd[READ_END], &msg, 1);
printf("read return:%d\n", read_return);
while(read_return > 0){
fputc(ch, out);
printf("%c",msg);
read_return = read(pipefd[READ_END], &msg, 1);
}
printf("child ends\n");
close(pipefd[READ_END]);
exit(EXIT_SUCCESS);
}
else if (return_from_fork > 0)
{
close(pipefd[READ_END]);
printf("this is parent\n");
fseek(in, 0L, SEEK_END);
loc = ftell(in);
while(loc >= 0L){
fseek(in, loc, SEEK_SET);
ch = fgetc(in);
printf("%c",ch);
int write_r = write(pipefd[WRITE_END], ch, 1);//here is the problem the printf() return -1
printf("%d",write_r);
loc--;
}
printf("\n");
close(pipefd[WRITE_END]);
wait(NULL);
printf("file successful generated.\n");
fcloseall();
exit(EXIT_SUCCESS);
}
}
这是编译结果:
zzz@ubuntu:~/Desktop/test$ gcc filereversecopy.c -o run
zzz@ubuntu:~/Desktop/test$ ./run src.txt out.txt
this is parent
�-1
-1e-1c-1n-1e-1t-1n-1e-1s-1 -1a-1 -1s-1i-1 -1s-1i-1h-1T-1
read return:0
child ends
file successful generated.
zzz@ubuntu:~/Desktop/test$
最佳答案
在你说的这一行有问题,你正在传递 ch 来写入,并且 ch 是 char 类型。我确定你的意思是 &ch 。我敢打赌,如果你改变 write 将返回 1 而不是 -1。
此外,您查找到末尾以开始阅读,但是当您查找到末尾时,您指向的是 EOF。您需要从 EOF 之前的位置开始读取。所以在“fseek(in, 0L, SEEK_END); loc = ftell(in);”之后添加“loc--; fseek(in, loc, SEEK_SET);”让它发挥作用。
关于c - c中的文件逆向复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33114086/
我有一个 Windows 应用程序,它使用此 C 代码的反向(下面的解码)来加密用户密码: static void PasswordDecode(char * szPassword) { char s
我目前正在尝试“破解”一个 Linux 嵌入式设备。此设备有一个不应使用的 telnet 守护程序。不管怎样,我已经从制造商网站上获取了二进制固件并成功地提取了根文件系统。顺便说一下,我现在有了/et
前言 你可以独善其身 但你不能兼济天下 。 简介 其实这部分是使用教程,github上面有备份的下载链接,只是可能不更新了,V2.2安装之后 一把快刀,很简洁的界面 点击界面里
我在具有相关质量的 3D 框中有几个点(x、y、z 坐标)。我想绘制在给定半径 R 的球体中发现的质量密度直方图。 我已经编写了一个代码,如果我没有犯任何我认为我可能有的错误,它的工作方式如下: 我的
我有一个代码函数,我试图扭转它的影响,但没有成功。我原来的功能是: ror al,1 // rotates the al part of
我想知道,是否有任何指南可用于识别应用程序二进制文件中与符号链接(symbolic link)相关的函数? 我们以BusyBox为例,/bin/ping是/bin/BusyBox的符号链接(symbo
所以我在查看一个受感染的 WordPress 网站时看到了这个注入(inject)的 js。它基本上进行了一轮混淆(charCodeAt(13-3,9-2等)。然后,它输出以下内容: var key
我在尝试获取引用未审计实体的审计实体时遇到问题。在我们的应用程序中,某些实体是在不使用 hibernate 的情况下引导的,这些实体是我们的元模型,不需要审计。 工作示例: public class
背景: 我们有一个基于 maven 的 java 项目,目标是 JRE 1.7,但是源代码使用了 lambda,所以我们使用 retrolambda 来转换 Java 8 源代码到 Java 7。我们
我是一名优秀的程序员,十分优秀!