我有一个c程序:
#include <sys/types.h>
#include "ourhdr.h"
int glob = 6; /* external variable in initialized data */
char buf[] = "a write to stdout\n";
int
main(void)
{
int var; /* automatic variable on the stack */
pid_t pid;
var = 88;
我试图从输入文件中读取数据,并最终反转它读取的缓冲区,并将其写入输出文件。不过,现在我正在测试,看看我读取的缓冲区是否会到达输出文件,到目前为止还没有,而且我得到了一个无限循环。缓冲区应以PAGESIZE字节(从对sysconf()的调用)读取,如果文件输出大于缓冲区,则应首先将缓冲区写入输出文件,然后刷新并再次重用,以获取其余的输入,直到文件描述符返回0表示没有数据为止。到目前为止,这就是我所拥有的:
int fdRead = open(inputFile, O_RDONLY);
if (fdRead == -1)
err_sys("Error reading input f
下面的程序调用fork()并打算生成一个孤立的进程。它正常工作,进程init (通过命令ps检查)获取孤立进程。但是为什么bash似乎在等待输入呢?
...
if ((pid = fork() < 0) {
err_sys("fork error"); /* err_sys is declared in apue.h */
} else if (pid == 0) {
/* sleep to ensure that parent process terminates first */
p
我最近完成了“Unix环境中的高级编程”(第三版)第10节(信号),我遇到了一段我不完全理解的代码:
#include "apue.h"
static volatile sig_atomic_t sigflag; /* set nonzero by sig handler */
static sigset_t newmask, oldmask, zeromask;
static void
sig_usr(int signo) /* one signal handler for SIGUSR1 and SIGUSR2 */
{
sigflag = 1;
}
voi
我有以下代码:
void
set_fl(int fd, int flags) /* flags are file status flags to turn on */
{
int val;
if ((val = fcntl(fd, F_GETFL, 0)) < 0)
err_sys("fcntl F_GETFL error");
val |= flags; /* turn on flags */
if (fcntl(fd, F_SETFL, val) < 0)
err_sys("
我读到了,8.13,系统函数,我看到了一个没有信号handling.Code的系统函数实现的版本,如下所示:
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
int system(const char *cmdstring) /* version without signal handling */
{
pid_t pid;
int status;
if (cmdstring == NULL)
re
我一直在遵循APUE的教科书,他们提供了一个打印用户定义的信号的例子。
static void sig_usr(int);
/* one handler for both signals */
int
main(void)
{
if (signal(SIGUSR1, sig_usr) == SIG_ERR)
err_sys("can’t catch SIGUSR1");
if (signal(SIGUSR2, sig_usr) == SIG_ERR)
err_sys("can’t catch SIGUSR2");
我正在读APUE (史蒂文斯的""),所以有一个文件"apue.h“,其中包含一些声明的自定义函数。我编写了一个名为"wait.c“的文件,它定义了在"apue.h”中声明的函数WAIT_CHILD和WAIT_PARENT,而14.6.c是主函数。
tmp/cciYhMd7.o: In function `err_ret':
14.6.c:(.text+0x0): multiple definition of `err_ret'
/tmp/ccO4WyJS.o:wait.c:(.text+0x0): first defined here
我正在尝试使用系统调用打开一个二进制文件,我不能使用函数(fopen等)
if ((fd2 = open("RandomStruct.bin",O_RDWR|O_CREAT)) == -1)
err_sys("Failed to open binary\n");
这行代码是不是不正确?谢谢!顺便说一句,我得到":Error 0“。