Tag: unix

将一个文件复制到另一个文件(Unix / C)?

我编写了以下代码将一个文件复制到另一个文件。 虽然代码有效,但代码仍会打印错误消息。 为什么是这样 ? 我是Unix和C编程的完全初学者(虽然之前我曾使用过C ++),所以尽可能详细的任何帮助都会很棒。 谢谢 ! int main(int argc, char *argv[]) { int n; char buf[4096]; while ((n=read( open(argv[1], O_RDONLY) , buf, 4096))>0) { if (write(creat(argv[2], S_IREAD | S_IWRITE ), buf, n)!=n) printf(“Error writing to file.\n”); } if (n<0) printf("Error reading from file.\n"); exit(0); }

动态地在C可执行文件中包含文本

对C和编译语言来说非常新。 我需要在此代码中基本上包含来自另一个文件的一行动态文本: #if T2T_NDEFFILE_PREDEF == URI const uint8_t T2T_DATA_DEF[] = { #include “/home/link” // Terminator TLV 0xF3 }; #endif 我已经尝试使用#include链接到文本文件,但是当文件“链接”中的文本发生更改时,它显然不会在编译的可执行文件中更改。 有没有简单的方法来做到这一点?

__try / __最终在UNIX中等效

我有一个主要用C语言编写的库,它的某些部分应该是线程安全的,我使用全局自旋锁来保护代码的关键部分。 现在我的问题是: 我应该从一个受自旋锁保护的关键部分内部调用一些用户回调,如果那些回调生成exception,在Windows上我有一个_ try / _finally在C中,即使在离开临界区时也是如此发生错误。 我也可以在UNIX上完成这个吗?

将Char *缓冲区转换为hex,以便在c 中打印

嗨我试图将char缓冲区中的值打印为hex值为(“0X%x”), char buffer[1024] printf(“recived (0x%x) from the client\n”,buffer); 但编译代码时有警告: server.c:105:5: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘char *’ [-Wformat] 那怎么解决这个问题????

go中无法读取utmpx文件

package main import ( “os” “fmt” ) func main() { fd, err := os.Open(“/var/run/utmpx”) fmt.Println(fd, err) var data []byte len, err := fd.Read(data) fmt.Println(len, err) } &{0xc42000a240}无 0零 没有错误,也没有数据。 从系统头文件中读取此路径/var/run/utmpx 。 如何获得这条道路是另一个问题 系统:macOS el capiton,go版本go1.8 darwin / amd64 **我的最终目标是将此文件读入go struct。**此文件包含系统用户信息。 我能这样做吗? 我会继续努力……

Rpc – 分段故障(核心转储)

我尝试用ubuntu中的RPC编程一个新程序,服务器执行正常,但我总是得到错误:执行客户端之后的分段错误(核心转储)这是我的代码 banque.x const max_cin = 8; typedef string typeCin; struct client { typeCin cin; float solde; }; typedef struct client client; struct cnMysql{ char * host; char * user; char * pass; }; typedef struct cnMysql cnMysql; program BANQUE { version Client { string Connect(cnMysql cn) = 0; string AddC(client c) = 1; client ConC(typeCin […]

rpcgen-在结构中传递一个字符串

我正在尝试使用rpcgen包将字符串作为网络结构的一部分传递。 这是我的IDL代码: struct param { char* name; int voterid; }; program VOTECLIENT_PROG { version VOTECLIENT_VERS { string ZEROIZE() = 1; string ADDVOTER(int) = 2; string VOTEFOR(param) = 3; string LISTCANDIDATES() = 4; int VOTECOUNT(string) = 5; } = 1; } = 0x2345111; 不知何故,该字符串被截断为服务器上的单个字符。 例如,如果我传递name =“abc”,我会在服务器上获得“a”。 由于存根中存在一些问题,看起来这种情况正在发生,但我似乎无法弄清楚错误的位置。 我的函数的客户端代码将字符串作为参数传递: void voteclient_prog_1(char *host, char* c, int id) { […]

坏文件描述符

有没有人看到这个问题,它不工作说坏文件描述不知道为什么? pipe(pipefd[0]); if ((opid = fork()) == 0) { dup2(pipefd[0][1],1);/*send to output*/ close(pipefd[0][0]); close(pipefd[0][1]); execlp(“ls”,”ls”,”-al”,NULL); } if((cpid = fork())==0){ dup2(pipefd[0][1],0);/*read from input*/ close(pipefd[0][0]); close(pipefd[1][1]); execlp(“grep”,”grep”,”.bak”,NULL); } close(pipefd[0][0]); close(pipefd[0][1]);

如何在会话期间获得新的套接字连接?

我正在使用带有send()和recv() C风格TCP套接字。 我在用户A和用户B之间运行连接,其中用户A充当服务器,用户B充当客户端。 我希望有一个被动用户C,它不会进行任何通信,但会从用户A接收数据。但是,新的被动用户C可以随时加入会话。 A可能会发送与发送B不同的C数据包。我想AC最好在不同于AB的端口上进行通信 如何在任意通信点进行这种连接(没有线程等)? 编辑仍未解决。

如何在gcc中打印UINT64_t?

为什么这段代码不起作用? #include main() { UINT64_t ram = 90; printf(“%d””\n”, ram); } 我收到以下错误: In function \u2018main\u2019 error: \u2018UINT64_t\u2019 undeclared (first use in this function) error: (Each undeclared identifier is reported only once error: for each function it appears in.) error: expected \u2018;\u2019 before \u2018ram\u2019