
LinuxC编程
岚漾忆雨
这个作者很懒,什么都没留下…
展开
-
ubuntu下孤儿进程的ppid为何不是1?
linux下用fork()可以创建一个新进程,如果该进程的父进程先于该进程死亡,该子进程就会变成孤儿进程,被init进程收养,其ppid本应为1,即init进程. 代码如下:#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<stdlib.h>int main(void){ pid_t pid;原创 2016-07-25 10:08:39 · 2460 阅读 · 2 评论 -
巧用sprintf()构造mysql语句
接我上一篇博客,在c中调用mysql,要用到mysql_query()函数来执行mysql语句,在调用这个函数之前,你需要先构造好相应的mysql语句.譬如,要给表格中加入数据,需要用到INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);其中的值1.2.3若是字符串就会遇到一个很坑爹的地方,字符串需要用”引用起来,一开始的想法是用大量的strcat来一步步构原创 2016-08-09 19:37:29 · 3344 阅读 · 2 评论 -
用c语言连接mysql
安装mysql,请自行百度安装mysql.h函数库sudo apt-get install libmysqlclient-dev执行之后就可以看到/usr/include/mysql目录了 然后开始我们的链接. 首先看我的数据库mysql> show databases;+--------------------+| Database |+-------------原创 2016-08-09 10:06:22 · 1424 阅读 · 0 评论 -
linux兴趣小组暑假第七次讲座总结
数据结构之 栈与队列栈先进后出,即只能从一端入栈,出栈,可以把他想象成一个仅有一只开口的瓶子队列先进先出,一端只能进队.另一端只能出队.他是一个两端都开口的瓶子解决问题括号匹配问题 判断括号是否正确匹配,可以用栈的思想解决.括号一共有{[(,}])六种,从第一个字符开始,如果是左括号,就将他放入栈中,如果遇到右括号,就将它与栈尾的括号比对,若果匹配,就让队尾的括号出栈,不匹配则直接证明括号匹配不原创 2016-08-08 22:23:03 · 435 阅读 · 0 评论 -
注意getpass()函数
getpass()函数用来接收密码,无回显; 函数原型:#include <unistd.h>char *getpass(const char *prompt);参数prompt时输入时的提示信息,返回 char *;我自己使用时遇到这种问题:#include<stdio.h>#include<unistd.h>#include<string.h>int main(void){原创 2016-08-06 10:46:41 · 3061 阅读 · 1 评论 -
linux兴趣小组暑假第六次讲座总结
进程进程是由【正文段 ,用户数据段,】(程序), 系统数据段共同组成的一个执行环境。进程的状态三态模型 运行-等待(阻塞)-就绪 其中,同一时间,只会存在一个运行态的进程,而我们平时看到的似乎多进程同时运行,其实不然,cpu是快速的在它们之间切换。进程控制块PCB linux/sched.hstruct tast.struct 1>状态信息 保存着进程的状态(进行/阻塞) 2>链接信息原创 2016-08-01 22:02:07 · 501 阅读 · 0 评论 -
用realine库完善你的my_shell
linux下的标准IO输入很不友善,至少它都不按左右方向键来移动光标,着很多时候会给你很大的困扰,而我在完善自己的shell的时候就被这块难倒了,到底怎么解决方向键的问题呢,我百度了很久,找到了这个好东西,readline库,他可以实现左右方向键移动光标,上下方向键查看历史输入,tab键补全的功能,下面我就来教大家如何使用这个库. 首先,安装它:sudo apt-get install libre原创 2016-08-01 08:46:01 · 737 阅读 · 0 评论 -
linux兴趣小组暑假第五次讲座总结
系统编程杂谈printf()变参函数的实现int my_printf(const char *fmt, ...) { va_list args; va_start(args, fmt); int i; int j=1; char ch; while(ch=*fmt++) { if(ch='%') { c原创 2016-07-30 11:40:42 · 515 阅读 · 0 评论 -
linux兴趣小组暑假第四次讲座总结
查看目标文件及二进制文件的工具 1.readELF – 目标文件 用”gcc -a a.c” -> a.o 2.objdump – 查看目标文件&&二进制文件 “objdump -h a.0”进程地址空间 1.Task_struck 结构体,里面存储了进程的相关信息 2.运行时地址空间结构 虚拟内存 – 所有进程共用一份操作系统代码 虚拟地址指向真实地址,他只是代表了地原创 2016-07-28 10:52:43 · 396 阅读 · 1 评论 -
[2016-7-29]每日总结
完善shell 1.使用readline库使得输入可以上下查看记录,tab自动补全 关于readline库的使用方法,详见我的博客 2.ls可显示颜色 3.history内建命令 4.help命令查看帮助讲座原创 2016-07-30 09:57:04 · 429 阅读 · 0 评论 -
linux兴趣小组暑假第二次讲座总结
代码规范 1.一行只写一条语句 2.循环体里只有一条语句也用{}括起来 3.case与switch对齐函数及变量命名方法 1.匈牙利命名法:eg.int int_num;即将变量类型标记出原创 2016-07-26 18:01:01 · 453 阅读 · 0 评论 -
linux可执行文件的t权限
文件最基础的属性时rwx,对应读读,写,可执行.#include<stdio.h>#include<unistd.h>#include<fcntl.h>#include<errno.h>#include<stdlib.h>#include<string.h>extern int errno;int main(){ int fd; printf("uid study:\n"原创 2016-07-25 22:23:02 · 1387 阅读 · 0 评论 -
vfork()子进程return 0对父进程的变量的影响
vfork()会产生一个新的子进程.但是vfork创建的子进程与父进程共享数据段.看如下代码#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<stdlib.h>int globVar = 5;int main(void){ pid_t pid; int var = 1,i; printf原创 2016-07-25 21:24:45 · 1196 阅读 · 0 评论 -
linux系统文件权限与目录权限所对应的操作
示例中我会用lyt的账号取操作属于pass的目录及文件,即这些操作,所看的权限是第三组others目录x权限drwxrwx--x 2 pass pass 4096 7月 25 08:55 flyt@lyt-N55SL:/home/pass$ cd flyt@lyt-N55SL:/home/pass/f$ lsls: 无法打开目录'.': 权限不够lyt@lyt-N55SL:/home/原创 2016-07-25 09:20:30 · 912 阅读 · 0 评论 -
西邮linux兴趣小组暑假留校安排计划
暑假留校安排计划必修内容1.LinuxC编程实战2.鸟哥的Linux私房菜选修内容1.python爬虫2.GTK图形库安排(总览):在完成必修目标的同时如有闲余时间可以学习选修内容,但一切以必修为主要内容具体安排:注:1.*:鸟哥llinux私房菜阅读2.@:回顾学习3.每周总结报告一般在周六晚上完成,周日上交4.由于博客的思绪的随机性,没有固定时间来写博客,都是在需要到的时候去写,每周原创 2016-07-18 09:30:42 · 964 阅读 · 3 评论 -
[小技巧]open()函数创建文件时便捷的权限设置
open()函数创建文件时便捷的权限设置头文件#include <sys/types.h> #include <sys/stat.h>#include <fcntl.h>函数原型int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mode);当flags参原创 2016-07-18 17:14:12 · 9869 阅读 · 1 评论 -
c语言格式化输出控制长度
c语言格式化输出控制长度今天在实现ls命令的时候,输出的文件名是上下对齐:1 2 a.c b crawler text 公共的 视频 文档 音乐1.c 2.c a.out b.c git win 模板 图片 下载 桌面便想着实现对齐,想到了c的格式化输出:printf("%-10s",s);这样便实现了将字符串s占10格居左输出.原创 2016-07-20 11:22:31 · 7684 阅读 · 0 评论 -
getcwd()函数的用法
先来看该函数的声明:#include<unistd.h>char *getcwd(char *buf,size_t size);介绍: 参数说明:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。 普通的用法会是这样:#define MAX_SIZE 255char path(MAX_SIZE);getcwd(path,siz原创 2016-07-23 09:43:41 · 55199 阅读 · 2 评论 -
操作系统实验——内存管理
内存为什么要管理在OS中,每个运行的进程都会占用内存,那么操作系统势必要做好两件事:内存分配和内存回收。这便是本次实验要做的模拟实验了。内存分配策略FF(首次适应算法)这种策略旨在从最低地址的空闲分区开始找起,找到合适的便进行分配。内存空间按起始地址从小到大排序。 优点:查找速度快 缺点:低地址会留下较多的内存碎片,高地址则会存留大块空闲分区。BF(最佳适应算法)...原创 2017-11-10 18:56:25 · 11723 阅读 · 1 评论