Posted on 2012-12-27 15:15:04 os
OS: ubuntu 12.04 x86_64
GCC: gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <libnotify/notify.h>
void usage(char *);
int close_std();
char * const short_options = "hf:b:";
struct option long_options[] =
{
{"help", 2, NULL, 'h'},
{"file", 2, NULL, 'f'},
{"body", 2, NULL, 'b'},
{NULL, 0, NULL, 0},
};
char * player = "/usr/bin/mplayer";
char * music_file = "/usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga";
char * notify_body = "You have a new mail!";
void usage(char * program_name)
{
printf("%s -h [--help]\n"
"-f [--file=filename] path to music file.\n"
"-b [--body=content] the body of notify dialog.\n", program_name);
exit(1);
}
int close_std()
{
if(close(STDIN_FILENO) == -1 || close(STDOUT_FILENO) ==-1 || close(STDERR_FILENO) == -1)
{
return -1;
}
return 0;
}
int main(int argc, char **argv)
{
int c, pid;
char * program_name = argv[0];
while((c = getopt_long(argc, argv, short_options, long_options, NULL)) != -1)
{
switch(c)
{
case 'h':
usage(program_name);
case 'f':
music_file = optarg;
break;
case 'b':
notify_body = optarg;
break;
case '?':
usage(program_name);
default:
usage(program_name);
}
}
if((close_std() == -1))
{
perror("close_std()");
exit(1);
}
//player music
if((pid = fork()) < 0)
{
perror("fork()");
exit(1);
}
else if(pid == 0)
{
if(execlp(player, player, music_file, (char *)0) < 0)
{
perror("execlp()");
exit(1);
}
exit(0);
}
//send notify information to user
if((pid = fork()) < 0)
{
perror("fork()");
}
else if(pid == 0)
{
notify_init("Mail");
NotifyNotification * notify = notify_notification_new("Mail", notify_body, "Mail");
notify_notification_show(notify, NULL);
exit(0);
}
exit(0);
}
Makefile:
SRC_INCLUDE=-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0
CC=gcc
MOD_CFLAGS=-fPIC
CFLAGS=-g -O2 -DHAVE_CONFIG_H -DNSCORE
LDFLAGS=
LIBS=-lnotify
DBG_FLAGS= -DDEBUG=1
OUT_PROGRAM= newmail_notify
all: main
main:
$(CC) $(MOD_CFLAGS) $(CFLAGS) $(SRC_INCLUDE) -o $(OUT_PROGRAM) newmail_notify.c $(MOD_LDFLAGS) $(LDFLAGS) $(LIBS)
Yup, that’ll do it. You have my aptpiciareon.
purchase tadalafil pill - buy tadalafil 10mg pills order tadalafil 10mg without prescription
buy furosemide generic - order viagra 150mg purchase sildenafil pill
order simvastatin 10mg online - purchase valacyclovir my mother essay writing
slot games - slot games free how to write an essay about my family
paxil and ativan paroxetine 20 mg online is paxil a psychotropic medication what are the side effects of taking paxil
stromectol sales stromectol 6mg usa retin us
buy generic azulfidine 500mg divalproex 500mg tablet cheap divalproex 250mg
cheap imdur 20mg buy lipitor order atenolol
buy tizanidine 2mg without prescription order generic tizanidine 2mg metoclopramide 20mg ca