Sponsored Content
Top Forums Programming Making hard link to a file in C Post 302400877 by surubi_abada on Thursday 4th of March 2010 11:14:40 AM
Old 03-04-2010
Making hard link to a file in C

hi there guys

could someone please, show me how to make a hard link to a file in c language ?

i am using minix. The program below reads the last number from file numbers, adds a one to it and then appends the new number into the file. I use a c script as driver to this program, the c script has 6 processors of this program. the processors read and write into the numbers file at the same time, causing disoder in the numbers file. so in order to put some order into this chaos, i want to use a hard link to the file numbers, which will prevent other processors to access the file when it is being used by onother processor.

But the way i am using link isn't working, can someone help ?

I am sorry for the lack of documentation in the code

Code:
# include <stdio.h>
# include <unistd.h> 

int readlastline(void){
	
FILE *f_ptr = fopen("numbers", "r"); 
int last = 0;
fseek(f_ptr, -5, SEEK_END);


	fscanf(f_ptr, "%5d", &last); 
		
	fclose(f_ptr);

	return last;
}

void add_append(int i){
	
FILE *fp = fopen("numbers", "a");

	if(i == 0){

		fprintf(fp," %5d \n", i);
		i++;
		fprintf(fp," %5d \n", i);

	}
	else{
		i++;
		fprintf(fp," %5d \n", i);
	}

	fclose(fp);
}

void main(void){

int count = 0;
char *numbers = "numbers";
char *lock = "lock";
int x;

	while ( count < 500){
		count++;
		
		if(link(numbers, lock) == 0){
		      	printf("in %s \n", " link succeed ");	
			x = readlastline();
			add_append(x);
			unlink(lock);
	
			
		}
	}
}

--------------------------------------------------------------------------
The c script:

Code:
/bin/sh
# testcount1 drives multiple instances of count1

rm -f numbers	# first remove the numbers file
echo 0 > numbers	# and initialise it to contain a 0

./count3 &	# run multiple processes in the background
./count3 &
./count3 &
./count3 &
./count3 &
./count3 	# except for the last to let us know when they are done
		# run ps to be certain all the processes have finished


Last edited by surubi_abada; 03-04-2010 at 02:22 PM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Differences between hard link and soft link

Hi all! I'd like to know the differences between hard links and soft links. I've already read the ln manpage, but i'm not quite sure of what i understood. Does a hard link sort of copy the file to a new name, give it the same inode number and same rights? What exactly should I do to do this:... (3 Replies)
Discussion started by: penguin-friend
3 Replies

2. UNIX for Dummies Questions & Answers

Why use a hard link

Someone asked me a question today about the difference between a hard link and a soft link. That got me thinking and maybe someone can answer. Why would I ever use a hard link if I can use a soft link instead? (2 Replies)
Discussion started by: dangral
2 Replies

3. UNIX for Dummies Questions & Answers

Difference between hard link and soft link in unix

Hi All, Can any one please explain me what is the difference between hard link and soft link in UNIX. Thanks in advance Raja Chokalingam. (2 Replies)
Discussion started by: RAJACHOKALINGAM
2 Replies

4. UNIX for Dummies Questions & Answers

need some info about symbolic link and hard link

hello folks how y'all doin well i have some questions about symbolic link and hard link hope some one answer me i open terminal and join as root and i wrote ln -s blah blah then i wrote ls i see red file called blah blah but didn't understand what is this can some one explain and... (2 Replies)
Discussion started by: detective linux
2 Replies

5. UNIX for Advanced & Expert Users

Hard link

Hello, In unix, the normal user can't create a hardlink for a directory. why..? Is there any difference between creating a hard link for a file and directory? The super user can create a hard link for directories. Why we cannot create and super user can create.? Please, can anyone help... (1 Reply)
Discussion started by: nagalenoj
1 Replies

6. UNIX for Dummies Questions & Answers

Hard Link vs SOft Link????

Hi PLease let me know the usage of Hard Link vs Soft Link i.e what is the basic difference and what happens when one file is changed or deleted in both the cases??? thanks (3 Replies)
Discussion started by: skyineyes
3 Replies

7. UNIX for Dummies Questions & Answers

Difference between hard link and soft link

Hi Experts, Please help me out to find out difference between a hard link and a soft link. I am new in unix plz help me with some example commands ( for creating such links). Regards S.Kamakshi :) (2 Replies)
Discussion started by: kamakshi s
2 Replies

8. UNIX for Advanced & Expert Users

Hard Link Examples

Hello, Please move this if I chose the wrong forum category. This question pertains to Unix and Linux I believe. I google the difference between hard and symbolic/soft links and I understand the difference. What I am trying to find is a real example of a hard link being used in a Operating... (11 Replies)
Discussion started by: jaysunn
11 Replies

9. UNIX for Dummies Questions & Answers

hard link concept

I created a file named as file and a its hard link named as hlink. Problem is that when I delete the file , it gets deleted without notifying that hardlink exists. But as far as I think we cannot delete the file unless we delete all the hard links pointing to it. Is there anything worng... (1 Reply)
Discussion started by: hiten.r.chauhan
1 Replies

10. Shell Programming and Scripting

Creating hard link with name

How can I create a hard link to a file, then rename the hard link to a different name? (2 Replies)
Discussion started by: fhill2
2 Replies
psrinfo(1M)                                               System Administration Commands                                               psrinfo(1M)

NAME
psrinfo - displays information about processors SYNOPSIS
psrinfo [-p] [-v] [processor_id...] psrinfo [-p] -s processor_id DESCRIPTION
psrinfo displays information about processors. Each physical processor may support multiple virtual processors. Each virtual processor is an entity with its own interrupt ID, capable of executing independent threads. Without the processor_id operand, psrinfo displays one line for each configured processor, displaying whether it is on-line, non-interrupt- ible (designated by no-intr), spare, off-line, faulted or powered off, and when that status last changed. Use the processor_id operand to display information about a specific processor. See OPERANDS. OPTIONS
The following options are supported: -s processor_id Silent mode. Displays 1 if the specified processor is fully on-line. Displays 0 if the specified processor is non-inter- ruptible, spare, off-line, faulted or powered off. Use silent mode when using psrinfo in shell scripts. -p Display the number of physical processors in a system. When combined with the -v option, reports additional information about each physical processor. -v Verbose mode. Displays additional information about the specified processors, including: processor type, floating point unit type and clock speed. If any of this information cannot be determined, psrinfo displays unknown. When combined with the -p option, reports additional information about each physical processor. OPERANDS
The following operands are supported: processor_id The processor ID of the processor about which information is to be displayed. Specify processor_id as an individual processor number (for example, 3), multiple processor numbers separated by spaces (for example, 1 2 3), or a range of processor numbers (for example, 1-4). It is also possible to combine ranges and (indi- vidual or multiple) processor_ids (for example, 1-3 5 7-8 9). EXAMPLES
Example 1: Displaying Information About All Configured Processors in Verbose Mode The following example displays information about all configured processors in verbose mode. psrinfo -v Example 2: Determining If a Processor is On-line The following example uses psrinfo in a shell script to determine if a processor is on-line. if [ "`psrinfo -s 3 2> /dev/null`" -eq 1 ] then echo "processor 3 is up" fi Example 3: Displaying Information About the Physical Processors in the System With no additional arguments, the -p option displays a single integer: the number of physical processors in the system: > psrinfo -p 8 psrinfo also accepts command line arguments (processor IDs): > psrinfo -p 0 512 # IDs 0 and 512 exist on the 1 # same physical processor > psrinfo -p 0 1 # IDs 0 and 1 exist on different 2 # physical processors In this example, virtual processors 0 and 512 exist on the same physical processor. Virtual processors 0 and 1 do not. This is specific to this example and is and not a general rule. EXIT STATUS
The following exit values are returned: 0 Successful completion. >0 An error occurred. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ SEE ALSO
psradm(1M), p_online(2), processor_info(2), attributes(5) DIAGNOSTICS
psrinfo: processor 9: Invalid argument The specified processor does not exist. SunOS 5.10 21 Feb 2004 psrinfo(1M)
All times are GMT -4. The time now is 05:02 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy