我正在做一个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) 如何从下往上逐行遍历文件?例如,这是我从上到下遍历它的代码:
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)
有什么想法吗?