Linux应用编程—完结

本文详细介绍了Linux应用编程的各个方面,包括文件I/O编程,使用标准C和Linux API,多线程编程的创建线程、互斥与同步,进程控制开发如创建子进程和后台进程,以及系统调用的使用。文中通过实例代码展示了如何在Linux环境下进行文件读写、多线程操作、进程管理和网络编程等核心概念和技术。
摘要由CSDN通过智能技术生成

5.Linux应用编程

5.1文件I/O编程

在Linux编程中,读写文件有2种方法:标准C、Linux API。

5.1.1标准C

使用stdio.h中的函数:fopen、fclose、fwrite、fread。

在windows下编程:

#include<stdio.h>

#include <stdlib.h>

 

int save()

{

const char*  filename = "aaa.txt";

FILE* fp = fopen(filename, "wb");

if (fp == NULL)

{

printf("failed to open file!\n");

return -1;

}

 

int buf[4] = { 0xA001,0xB002,0xC003,0xD004 };//0xFFFF时4个字节,因此可以用int表示

fwrite(buf, sizeof(int), 4, fp);

 

fclose(fp);

return 0;

 

}

int load()

{

const char*  filename = "aaa.txt";

FILE* fp = fopen(filename, "rb");

if (fp == NULL)

{

printf("failed to open file!\n");

return -1;

}

 

int buf[4];

fread(buf, 4, 4, fp);

//10进制转换为16进制

for (int i = 0; i < 4; ++i)

{

printf("10进制:%d\n", buf[i]);

//转换成16进制,存放在字符串中

char buffer[33];

itoa(buf[i], buffer, 16);

//字母大小写切换

for (int a = 0; a < 33; ++a)

if (buffer[a] >= 'a'&& buffer[a] <= 'z')

buffer[a] = buffer[a] - 32;

//16进制+0x

char temp[33];

sprintf(temp, "0x%s", buffer);

printf("16进制: %s\n", temp);

}

 

fclose(fp);

return 0;

}

 

int main()

{

save();

load();

getchar();

return 0;

}

在Linux下编译:

错误:‘itoa’在此作用域中尚未声明

方法:将itoa换成sprintf。

#include<stdio.h>

#include <stdlib.h>

 

int save()

{

const char*  filename="aaa.txt";

FILE* fp=fopen(filename,"wb");

if(fp==NULL)

{

printf("failed to open file!\n");

return -1;

}

  

int buf[4]={0xA001,0xB002,0xC003,0xD004};//0xFFFF时4个字节,因此可以用int表示

fwrite(buf,sizeof(int),4,fp);

 

fclose(fp);

return 0;

 

}

int load()

{

const char*  filename="aaa.txt";

FILE* fp=fopen(filename,"rb");

if(fp==NULL)

{

printf("failed to open file!\n");

return -1;

}

  

int buf[4];

fread(buf,4,4,fp);

//10进制转换为16进制

for(int i = 0;i < 4;++i)

{

printf("10进制:%d\n",buf[i]);

//转换成16进制,存放在字符串中

char buffer [33];

sprintf(buffer,"%04X",buf[i]);

//16进制+0x

char temp[33];

sprintf(temp,"0x%s",buffer);

printf ("16进制: %s\n",temp);

}

    

fclose(fp);

return 0;

}

 

int main()

{

save();

load();

getchar();

return 0;

}

Windows平台和linux平台使用标准C或C++还是有些不同,具体可参考:https://blog.csdn.net/m_star_jy_sy/article/details/8482202。

对于文本文件,在windows平台下换行符:\r\n;在linux平台下换行符:\n。

在Linux下使用标准C的优点:可以支持多平台;缺点:Linux系统下设备文件只用Linux API操作。

5.1.2 Linux API

#include<stdio.h>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值