小编Lil*_*nks的帖子

创建我的第一个Unix服务器/客户端,但得到"shmget:无效的参数"错误,可能还有更多.[C]

我正在做一个Unix,C分配.我正在创建一个服务器和一个将相互交互的客户端.我对TCP/IP编程不是很有经验,所以我为提前缓慢道歉.

首先,我正在尝试创建我的设置的基本布局.我使用Makefile编译客户端和服务器,它完美地工作.但是,当我执行服务器时,我收到此错误:

shmget: Invalid argument
Run Code Online (Sandbox Code Playgroud)

我认为这是IPC资源的问题.我应该使用atexit()删除IPC资源,但我不认为我做得对.

这是server.c的代码,如果它有帮助:

#include "server.h"

int shmid, semid;
struct Shared *shm;

int main() {
    key_t shmkey = 0x6060, semkey = 0x6061;
    char *s, c;
    unsigned short zeros[2] = {0, 0};

    int srvrFd, clntFd, clntAdrLen, i; //socket
    struct sockaddr_in srvrAddr, clntAddr;
    char buf[256];

    if(atexit(server_exit) != 0) {
            perror("failed to attach atexit()");
            _exit(EXIT_FAILURE);
    }
    /* Create an array of 2 semaphores with key. */
    semid = semget(semkey, 2, 0666 | IPC_CREAT);
    if (semid < 0) {
            perror("semget");
            exit(0); …
Run Code Online (Sandbox Code Playgroud)

c unix tcp-ip

2
推荐指数
1
解决办法
9902
查看次数

是否可以从下往上遍历文件?[C]

如何从下往上逐行遍历文件?例如,这是我从上到下遍历它的代码:

void *readFileTB(char *str1)
{
    int size = 1024;
    char *buffer = malloc(size);
    FILE *fp;
    fp = fopen("testfile.txt", "r");
    while(fgets(buffer, 1024, fp)) //get a line from a file
    {
            printf(buffer);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果文件包含:

line1onetest
line2twotest
line3threetest
Run Code Online (Sandbox Code Playgroud)

如果执行此功能将打印以下内容:

line1onetest
line2twotest
line3threetest
Run Code Online (Sandbox Code Playgroud)

我怎样才能编写一个能够完成上述操作但功能相反的函数,以便输出以下内容?

line3threetest
line2twotest
line1onetest
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

c traversal file

1
推荐指数
1
解决办法
544
查看次数

标签 统计

c ×2

file ×1

tcp-ip ×1

traversal ×1

unix ×1