![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux C 编程
Linux C 编程
我叫RT
无它,唯手熟耳。
心之所向,莫向外求。
展开
-
命令行参数解析函数 getopt、getopt_long
getopt 函数在头文件 <unistd.h> 中,它可以解析我们传入的命令行参数。 可以实现类似 gcc -o 、rm -rf 等命令。man 3 getopt 。在线版:http://man.he.net/?topic=getopt§ion=3 #include <unistd.h> int g原创 2021-12-08 13:08:41 · 1550 阅读 · 0 评论 -
关于nc命令使用eof断开连接
nc 命令功能非常强大,使用非常方便。关于它的使用,网上有很多资料可以了解到,这里就不再赘述。本片文章源自于我在尝试通过 nc 传输文件时,发现文件传输完之后,连接没有自动断开,只有手动输入 Ctrl-C 之后才断开连接。而在另一台机器上,使用nc命令传输文件时,使用Ctrl-C和Ctrl-D都可以关闭连接。在无法Ctrl-D断开连接的机器上通过man查看nc的参数,发现有一个 -q 参数可以指定EOF作为断开的条件。 -q seconds after EOF on stdin, wait原创 2021-11-20 21:50:05 · 3448 阅读 · 1 评论 -
如何正确关闭TCP连接
如何正确关闭TCP连接参考自:https://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable假设我们在两个POSIX兼容操作系统上运行以下两个程序,目的是从程序A发送100万字节来编程B(这里可以在此处找到程序):A: sock = socket(AF_INET, SOCK_STREAM, 0); connect(sock, &remot原创 2021-11-20 15:29:43 · 6060 阅读 · 1 评论 -
Linux C 编程 | main函数的命令行参数
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>int main(int argc, char * argv[], char * envp[]){ int i = 0; for(i = 0; i < argc; ++i) { printf("argv[%d] = %s\n",i,argv[i]);原创 2021-03-19 00:45:41 · 172 阅读 · 0 评论 -
Linux C 编程 | 文件拷贝
#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <assert.h>int main(int argc, char *argv[]){ //系统调用write() //write(1,"hello world!",12);//0 标准输入 1 标准原创 2021-03-19 00:46:08 · 407 阅读 · 0 评论 -
Linux C 编程 | exec函数
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>//argv[0] 为程序运行名int main(int argc, char* argv[], char* anvp[]){ printf("main pid = %d\n",getpid()); //execl("/bin/ps", "ps", "-f", (char*)0);原创 2021-03-19 00:46:24 · 469 阅读 · 0 评论 -
Linux C 编程 | 捕捉CTRL-C信号
#include <stdio.h>#include <unistd.h>#include <string.h>#include <signal.h>void fun_sig(int sig){ printf("sig = %d\n",sig); // 第二次收到信号时,以默认的方式处理 signal(sig,SIG_DFL);}int main(){ signal(SIGINT, fun_sig); /原创 2021-03-18 01:07:29 · 2974 阅读 · 0 评论 -
Linux C 编程 | c语言通过kill发送信号,模拟kill命令
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <signal.h>//模拟kill命令,kill默认值15int main(int argc, char* argv[]){ if( argc != 3) { printf("argc error!"); exit(0原创 2021-03-18 01:01:24 · 521 阅读 · 0 评论 -
Linux C 编程 | pwd命令实现
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int main(){ char buff[256] = {0}; getcwd(buff,265); printf("%s\n",buff); exit(0); }原创 2021-03-18 00:45:38 · 139 阅读 · 0 评论 -
Linux C 编程 | 简单的bash命令解释器实现
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <assert.h>#include <signal.h>#include <sys/wait.h>#include <pwd.h>//自定义路径地址#define PATH "/home/tr"//打印提示信息void原创 2021-03-18 00:43:29 · 249 阅读 · 0 评论 -
Linux C 编程 | 实现ls命令
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <dirent.h>#include <sys/stat.h>int main(){ char buff[256] = {0}; getcwd(buff,256); //打开文件 DIR* ptr = opend原创 2021-03-18 00:29:44 · 246 阅读 · 0 评论 -
Linux C 编程 | c程序调用shell脚本
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <assert.h>#include <sys/wait.h>// c程序调用脚本// fork + execint main(){ printf("mian pid=%d\n",getpid()); pid_t pid = fork();//原创 2021-03-17 21:15:32 · 171 阅读 · 0 评论