Linux编程学习
文章平均质量分 95
小小哇牛
jiayou
展开
-
Linux控制界面文字显示位置
如果编译不了,或许是因为Linux没有安装curses包/* ============================================================================ Name : iconv.c Author : Version : Copyright : Your copyright notice原创 2016-07-18 18:10:01 · 952 阅读 · 1 评论 -
Linux下字符集转换方法
Linux是支持UTF-8的编码格式,别的编码格式需要转换一下,否则会出现乱码,Linux基本上支持所有的字符集类型,转化之前先用iconv --list看看Linux是否支持需要转化的格式/* ============================================================================ Name : iconv.c原创 2016-07-18 17:35:06 · 1201 阅读 · 0 评论 -
Linux MySql学习记录
建立数据库CREATE DATABASE db1 CHARACTER set utf8;查看数据库show databases;删除数据库DROP DATABASE db_name使用数据库USE db_name登陆MySql用户mysql -u user_name -p设置用户编码集set names utf8;创建表CREAT原创 2016-07-25 18:07:21 · 526 阅读 · 0 评论 -
UDP实现网络数据传输
客户端代码#include #include #include #include #include #include #include #include #include int main(int arg, char *args[]){ if (arg < 3) { return -1; } int st = socket(AF_INET, SOCK_D原创 2016-07-14 10:58:55 · 720 阅读 · 0 评论 -
Linux利用socket实现两台pc之间的数据传输功能,包括windows到linux,TCP/IP实现
Linux利用socket实现两台pc之间的数据传输功能,包括windows到linux连接选项-lWs2_32代表要用Ws2_32.lib这个库gcc编译选项,-D 代表定义一个宏,等同于在c语言当中定义 #defind WIN在windows下,使用socket之前,必须使用WSAStartup初始化socket,程序运行结束以后必须原创 2016-07-14 15:19:10 · 5877 阅读 · 1 评论 -
Linux利用socket实现两台pc之间的数据传输功能,包括windows到linux,UDP实现
makefile 和TCP一样,参见上一篇博文客户端和服务端主函数也和上一篇的tcp是一样的,同样参考上一篇博文,这里只是修改了pub.c的文件了#ifdef WIN#include #else#include #include #include #include #include #include #define SOCKET int#endif#incl原创 2016-07-14 18:01:44 · 2780 阅读 · 0 评论 -
网络程序抓包工具
sinffer.cpp文件// sinffer.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "pub.h"int main(int argc, char* argv[]){ if (argc < 3) { printf("usage: %s IPAddress port [byte]\n", argv[0]);原创 2016-07-17 18:42:29 · 2961 阅读 · 0 评论 -
改进后的客户端服务器聊天功能,此版本比上版本多了加锁处理,多了客户端数量控制,多了线程join操作
改进后的客户端服务器聊天功能客户端代码#include #include #include #include #include #include #include #include #include void* recvsocket(void *arg){ int st = *(int *)arg; char s[1024]; while (1) { m原创 2016-07-13 14:18:12 · 661 阅读 · 0 评论 -
Linux的Epoll的通用写法
/* ============================================================================ Name : epoll.c Author : Version : Copyright : Your copyright notice Description : Hello World i原创 2016-07-18 22:45:52 · 566 阅读 · 0 评论 -
C语言实现远程MySql的增删改查
mysql_query(MYSQL *connevtion, char *sql)执行SELECT语句得到查询结果MYSQL_RES *mysql_store_result(MYSQL *pmysql);成功返回一个查询结果指针,查询为结果或者错误返回NULLmysql_free_result(MYSQL_RES *result)调用完mysql_store_res原创 2016-07-28 18:14:31 · 2710 阅读 · 0 评论 -
ubuntu16.04LTS安装Qt Creator
转自:http://blog.csdn.net/keith_bb/article/details/51533584开发需要,在 Linux下安装Qt Creator。我电脑装的是Ubuntu16.04LTS,其它的应该相同!1.Qt下载关于Qt下载,比较机智的同学都回去官网直接download,但是步骤相当繁琐!大家可以打开下面的链接,里面有各版本Qt,操作简单,童叟无欺!转载 2016-08-26 12:37:05 · 1443 阅读 · 0 评论 -
Linux下Oracle的Proc学习笔记
Proc的make特别复杂,但是基本都一样,一个模板搞定所有.SUFFIXES: .c .oCC=gccPROC=procPROCSRCS=oracle.pcSRCS=$(PROCSRCS:.pc=.c)OBJS=$(SRCS:.c=.o)ORACLE_HOME=/opt/oracle/product/11.2.0ORAFLAGS1=/usr/include/linuxO原创 2016-08-09 09:58:07 · 1889 阅读 · 0 评论 -
RedHat6.3安装Oracle详解
这里安装的是64位的系统,32位的注意一下首先在root用户下执行cd /media然后cd *进入RHEL_6.3 x86_64 Disc 1然后再cd Packages按顺序执行下面给命令,进行安装rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpmrpm -ivh elfutils-libelf-devel-0.152-原创 2016-08-04 15:09:37 · 1208 阅读 · 0 评论 -
window和linux安装qt5.2注意事项
windows下环境变量path需要加入以下路径,以便QT写的程序可以离开QT开发环境独立运行C:\Qt\Qt5.2.0\5.2.0\\mingw48_32\bin\;C:\Qt\Qt5.2.0\Tools\mingw48_32\bin;linux安装的时候需要确定操作系统位数linux下需要设置.bash_profile文件PATH中加入/opt/Qt5.2.0/5.2.0/原创 2016-07-20 14:42:02 · 571 阅读 · 0 评论 -
在Linux下用多线程实现两台客户端通过服务器进行聊天,类似qq功能
pub.h文件/* * pub.h * * Created on: 2016年7月21日 * Author: Administrator */#ifndef PUB_H_#define PUB_H_#include #include #include #include #include #include #include #include #in原创 2016-07-21 16:04:45 · 3474 阅读 · 3 评论 -
通过TCP协议实现多个client端可以并发连接到server,client可获得server指定目录下的文件列表。
程序有些小问题,不能连着输入,具体问题处在哪里还没有找到,先记下代码,回来在仔细查找错误地方服务端代码如下:/* ============================================================================ Name : qqepoll.c Author : Version : Copyr原创 2016-07-20 23:38:44 · 3165 阅读 · 0 评论 -
C语言封装所有MySql操作
主程序#include #include #include #include #include #include #include #include "mydb.h"void sqldb(const char *src)//参数src为要执行的SQL语句{ if ((strncmp(src, "select", 6) == 0) || (strncmp(src, "S原创 2016-08-03 14:10:29 · 2724 阅读 · 0 评论 -
写一个钩子,控制远程主机按键
先上到代码,hookdll项目代码如下dllmain.cpp// dllmain.cpp : 定义 DLL 应用程序的入口点。#include "stdafx.h"HMODULE hHookDll;// 定义一个全局的HMODULE供SetWindowsHookEx函数使用BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_rea原创 2016-07-17 23:48:42 · 861 阅读 · 0 评论 -
Red Hat 6.3安装gcc gc++
转自http://blog.csdn.net/quantyongan/article/details/38494193,亲测可用首先安装gcc需要相应的rpm依赖包,在安装系统的镜像文件中就有这些rpm包首先在光驱中选择系统的安装包载入如果桌面显示有如下的光驱说明是已经载入了镜像,这时候,需要挂载一下镜像到mnt目录先在/转载 2016-07-02 18:05:20 · 3568 阅读 · 0 评论 -
设置可以在当前目录查找可执行文件的方法
建立一个新用户test5,指定用户的宿主目录为/home/test5useradd -d /home/test5 test5如何让linux在当前目录下找到可执行程序第一步,没有参数的cd命令,代表回到用户的宿主目录cd第二步,打开宿主目录下的.bash_profile文件vi .bash_profile第三步,在PATH后面加:.代表在当前目录下找可执行文件原创 2016-07-03 13:47:11 · 1037 阅读 · 0 评论 -
Linux网络编程实现客户端服务端收发数据功能
客户端代码#include #include #include #include #include #include #include #include int main(void){ int st = socket(AF_INET, SOCK_STREAM, 0);//初始化socket struct sockaddr_in addr; // 定义一个IP地址的结构原创 2016-07-12 11:53:36 · 2195 阅读 · 2 评论 -
Linux多线程知识
第一次使用pthread,遇到的问题还真不少,现在我一一记录一下: 1.关于编译时出现 对‘pthread_create’未定义的引用 之类的错误的解决:由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数: gcc -o pthread -lpthrea原创 2016-07-12 14:01:15 · 419 阅读 · 0 评论 -
1、利用多线程与有名管道技术,实现两个进程之间发送即时消息,实现聊天功能。
fifo1源文件#include #include #include #include #include #include #include #include #include void* readfifo(){ const char *sfifoname = "fifo1"; int fd = open(sfifoname, O_RDONLY); if (fd原创 2016-07-12 14:29:42 · 2720 阅读 · 0 评论 -
Linux客户端与服务器相互实现聊天功能
客户端代码如下#include #include #include #include #include #include #include #include int main(int arg, char *args[]){ if (arg < 3) { return -1; } int port = atoi(args[2]); int st = socke原创 2016-07-13 11:54:09 · 5348 阅读 · 1 评论 -
Linux用多线程和socket实现跨机器的聊天通信功能
客户端代码如下#include #include #include #include #include #include #include #include #include void* recvsocket(void *arg){ int st = *(int *)arg; char s[1024]; while (1) { memset(s, 0, si原创 2016-07-13 13:43:16 · 1514 阅读 · 0 评论 -
测试Linux下socket每次发送数据和接受数据的最大值
经试验发现,客户端一次发送数据大小有个上线,本机试验数据最大是384KB,超出最大值的时候,客户端会阻塞到发送语句哪里等待服务端接受数据。服务多也是一样,有一个最大的一次性接受数据的上线,本机试验最大接受数据是64KB,但是这个服务端好像不确定具体接受多少#include #include #include #include #include #include #include原创 2016-07-14 10:34:11 · 4082 阅读 · 0 评论 -
qt 下UDP消息的接收和发送和TCP发送文件
#ifndef WIDGET_H#define WIDGET_H#include #include #include #include #include class Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = 0); ~Widget();private:原创 2016-07-26 16:28:07 · 3483 阅读 · 0 评论 -
虚拟机上Rathat6.3安装MySQL-5.6.16-1.rhel5.x86_64.rpm-bundle教程
首先需要下载的软件有MySQL-5.6.16-1.rhel5.x86_64.rpm-bundle,http://download.csdn.net/detail/hellonigesb/9585117,分五部分,其他链接进入我的资源主页找就能找到,Linux6.3的镜像文件在网上很好找,真是找不到了,留言我给你发,记着Linux需要是64位的,如果是32,那么你需要在网上找一下32位对应的Mysq原创 2016-07-25 13:53:47 · 2889 阅读 · 0 评论 -
通过有名管道实现两个进程单向通讯
写进程#include #include #include #include #include #include #include #include void writefifo(){ char buf[128]; memset(buf, 0, sizeof(buf)); int fd = open("fifo", O_WRONLY); if (fd == -1)原创 2016-07-11 16:22:24 · 659 阅读 · 0 评论 -
自己动手实现一个守护进程,当控制台窗口关闭时还可以在后台运行。每隔一秒钟向my.log文件中插入一条记录
自己动手实现一个守护进程,当控制台窗口关闭时还可以在后台运行。每隔一秒钟向my.log文件中插入一条记录,记录格式如下:yyyy-mm-dd hh:mi:se 记录内容,其中yyyy为年,mm为月,dd为天,hh为小时,mi为分钟, se为秒。void writelog(const char *log){ time_t tDate; struct tm *eventTime;原创 2016-07-10 18:16:34 · 1547 阅读 · 0 评论 -
makefile编写笔记
.SUFFIXES:.c .o //.c和.o建立关联CC=gccSRCS=hello.c\ add.c //同时编译两个.c文件OBJS=$(SRCS:.c=.o)//ORJS=hello.o add.oEXEC=hellostart: $(OBJS) //依赖hello.o add.o $(CC) -原创 2016-07-03 13:48:11 · 373 阅读 · 0 评论 -
虚拟机上rad hat网络相关设置
1、首先是开机启动网络的配置文件修改ifcfg-eth0文件:路径是 cd /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT选项值是NO,也就是说开机没有激活网卡,将NO改为YES即可。2、配置固定IP地址方法,进入界面模式点击Networkc Connections进行设置原创 2016-07-04 15:09:59 · 768 阅读 · 0 评论 -
编写两个不同的可执行程序,一个打开文件,一个读文件
2、编写两个不同的可执行程序,名称分别为a和b,b为a的子进程。在a程序中调用open函数打开a.txt文件。在b程序不可以调用open或者fopen,只允许调用read函数来实现读取a.txt文件。(a程序中可以使用 fork与execve函数创建子进程)。打开文件的进程#include #include #include #include #include #incl原创 2016-07-09 12:54:08 · 893 阅读 · 0 评论 -
Linux编写一个孤儿进程,这个孤儿进程可以同时创建100个僵死进程。
#include #include #include #include #include #include #include #include #include int main(void){ pid_t pid = fork(); if (pid < 0) { return 0; } if (pid > 0) { exit(0); } if (pi原创 2016-07-09 12:51:42 · 1504 阅读 · 0 评论 -
编写两个进程a和b,利用共享内存技术,a向共享内存写字符串,b将从共享内存中读到的字符串在屏幕上打印出来。
创建一个共享内存#include #include #include #include #include #include #include #include #include #include #include int main(int arg, char *args[]){ int shmid = shmget(IPC_PRIVATE, 1024, 0666);原创 2016-07-09 12:55:58 · 4385 阅读 · 1 评论 -
实现一个so库文件名称为listupper.so,so文件中实现一个函数
so头文件#ifndef HOMEWORK_H_#define HOMEWORK_H_#ifdef __cplusplusextern "C"{#endif void upper(const char *src, char *desc);#ifdef __cplusplus}#endif#endif /* HOMEWORK_H_ */so的cpp文件#inc原创 2016-07-09 17:29:58 · 356 阅读 · 0 评论 -
Linux守护进程加上发送信号固定模式
#include #include #include #include #include #include #include #include #include #include #include #include int singnal1(int signo, void (*func)(int)){ struct sigaction act, oact; act.s原创 2016-07-10 10:28:45 · 985 阅读 · 0 评论 -
实现两个程序mysignal、mycontrl,mycontrl给mysignal发送SIGINT信号,控制mysignal是否在屏幕打印“hello”字符串。
int status = 0;void catch_Signal(int Sign){` switch (Sign) { case SIGINT: if (status == 0) status = 1; else status = 0; break; }}int singnal1(int signo, void (*func)(i原创 2016-07-10 17:53:24 · 1523 阅读 · 0 评论 -
Ubuntu16.04安装openjdk-7-jdk
Ubuntu16.04的安装源已经默认没有openjdk7了,所以要自己手动添加仓库,如下:sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-7-jdk转载 2016-08-26 14:17:27 · 1070 阅读 · 0 评论